var http = require('http')
var fs = require('fs')
var path = require('path')
var cache = {}

var chatServer = require('./lib/chat_server')
chatServer.listen(server)

function send404(res) {
    res.writeHead(404,{'Content-Type':'text/plain'})
    res.write('Error 404: resource not found')
    res.end()
}

var sendFile = function(res,filePath){
    //读取文件，读取完成后给客户端响应
    fs.readFile(filePath,function(err,data){
        if(err){                        //如果失败，就返回错误文件
            if(filePath != error)       //如果失败的不是错误文件，才返回错误文件
                Response(res,error);
        }else{
            //获取后缀名
            var i = filePath.lastIndexOf('.');
            var suffix = filePath.substr( i+1, filePath.length);
            res.writeHead(200,{                     //响应客户端，将文件内容发回去
                'Content-type':"text/"+suffix});    //通过后缀名指定mime类型
            res.end(data);
        }
    });
};

function serverStatic(res,cache,absPath) {
    if (cache[absPath]){
        sendFile(res,absPath,cache[absPath])
    }else{
        fs.exists(absPath,function (exists) {
            if (exists){
                fs.readFile(absPath,function (err,data) {
                    if (err){
                        send404(res)
                    }else{
                        cache[absPath] = data
                        sendFile(res,absPath,data)
                    }
                })
            }else {
                send404(res)
            }
        })
    }
}

var server = http.createServer(function (req,res) {
    var filePath = false

    if (req.url == '/'){
        filePath = 'public/index.html'
    }else {
        filePath = 'public' + req.url
    }
    var absPath = './' + filePath
    serverStatic(res,cache,absPath)
})

server.listen(3000,function () {
    console.log("server start")
})

